package sudoku.server.persistencia;

import sudoku.server.dominio.Kenken;
import sudoku.server.dominio.Sudoku;
import sudoku.server.persistencia.filesystem.TableroDAOFS;
import sudoku.server.persistencia.sqlserver.TableroDAOSQLServer;

public class FachadaPersistencia {
	private static FachadaPersistencia yo;
	private static int tipoPersistencia;
	private static String ubicacionSudokus;
	
	protected FachadaPersistencia(int tipoPersistencia, String ubicacionSudokus) {
		FachadaPersistencia.tipoPersistencia=tipoPersistencia;
		FachadaPersistencia.ubicacionSudokus=ubicacionSudokus;
	}
	
	public static FachadaPersistencia buildInstancia(int tipoPersistencia, String ubicacionSudokus) {
		if (yo==null)
			yo=new FachadaPersistencia(tipoPersistencia, ubicacionSudokus);
		return yo;
	}

	public static TableroDAO getSudokuDAO(Sudoku sudoku) {
		if (tipoPersistencia==Constantes.FILE_SYSTEM)
			return new TableroDAOFS(sudoku, FachadaPersistencia.ubicacionSudokus);
		else
			return new TableroDAOSQLServer(sudoku);
	}

	public static TableroDAO getSudokuDAO() {
		if (tipoPersistencia==Constantes.FILE_SYSTEM)
			return new TableroDAOFS(null, ubicacionSudokus);
		else
			return new TableroDAOSQLServer(null);
	}

	public static TableroDAO getKenkenDAO(Kenken kenken) {
		if (tipoPersistencia==Constantes.FILE_SYSTEM)
			return null;
		else
			return new TableroDAOSQLServer(kenken);		
	}
	public static TableroDAO getKenkenDAO() {
		if (tipoPersistencia==Constantes.FILE_SYSTEM)
			return null;
		else
			return new TableroDAOSQLServer(null);
	}
}
